<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=371724
-->
<head>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
  <bindings xmlns="http://www.mozilla.org/xbl">
    <binding id="rd">
      <implementation>
        <property name="hallo" onget="return true;" readonly="true" exposeToUntrustedContent="true"/>
      </implementation>
    </binding>
  </bindings>
</head>
<body>
  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=371724">Mozilla Bug 371724</a>
  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <div id="a" style="-moz-binding:url('#rd');">Success!</div>
  <pre id="test">
    <script class="testbody" type="text/javascript">  
      /** Test for Bug 371724 **/
      SimpleTest.waitForExplicitFinish();
      function checkReadOnly() {
        var elt = document.getElementById('a');
        var oldValue = elt.hallo;
        var actual;
        try {
          elt.hallo = false;
          actual = elt.hallo;
        } catch (ex) {
          actual = "" + ex;
        }
        is(actual, true,
           "Setting a readonly xbl property should do nothing if !strict");
        checkReadOnlyStrict();
      }
      function checkReadOnlyStrict() {
        "use strict";
        var elt = document.getElementById('a');
        var actual;
        try {
          elt.hallo = false;
          actual = "should have thrown";
        } catch (ex) {
          actual = ex instanceof TypeError;
        }
        is(actual, true,
           "Setting a readonly xbl property should throw a TypeError exception if strict");
        SimpleTest.finish();
      }
      addLoadEvent(checkReadOnly);
    </script>
  </pre>
</body>
</html>
